#include <iostream>

std::string foo() {
    return std::string("hello world");
}

int main() {
    int a = 1;
    int &b = a;

    // 左值，可以被修改的值
    // 右值，不可以被修改的值

    // 绑定到左值的引用，叫做左值引用
    // 绑定到右值的引用，叫做右值引用
    // 不能用左值引用绑定右值 int &m = 10;

    const int c = 3;
    const int &d = c; // 左值引用

    int m = 10;
    int &m_r = m;

    int &&m_rr = 10; // 右值引用

    std::string &&str = foo();
    std::cout << str << std::endl;

    return 0;
}